#pragma once
#include<iostream>
#include<opencv2/opencv.hpp>
#include<vector>
#include<string>
using namespace std;
using namespace cv;

void ReadImage(Mat& paramImg);

void Connection(Mat& paramRegion, Mat& paramOutRegion);

void SelectShapeArea(Mat& paramInputRegion, double paramMinValue, double paramMaxValue);

void SelectShapeWidth(Mat& paramInputRegion, double paramMinValue, double paramMaxValue);

void SelectShapeHeight(Mat& paramInputRegion, double paramMinValue, double paramMaxValue);

void SelectShapeRow(Mat& paramInputRegion, double paramMinValue, double paramMaxValue);

void SelectShapeColum(Mat& paramInputRegion, double paramMinValue, double paramMaxValue);

void SelectShapeRect_1(Mat& paramInputRegion, double paramMinValue, double paramMaxValue);

void SelectShapeRect_2(Mat& paramInputRegion, double paramMinValue, double paramMaxValue);

void SelectShapeRectangularity(Mat& paramInputRegion, double paramMinValue, double paramMaxValue);

void SelectShapeCircularity(Mat& paramInputRegion, double paramMinValue, double paramMaxValue);

void SelectShapeRatio(Mat& paramInputRegion, double paramMinValue, double paramMaxValue);

void SelectShapeAnisometry(Mat& paramInputRegion, double paramMinValue, double paramMaxValue);

void RegionFeaturesArea(Mat& paramRegion, vector<vector<double>>& paramValue);

void RegionFeatures(Mat& paramRegion, String paramShpeType,vector<vector<double>>& paramValue);

void ReduceDomain(Mat& paramInputImg, Mat& paramInputRegion, Mat& paramOutputImg);

void ShapeTrans(Mat& paramInputRegion, Mat& paramRegionTrans, String paramShpeType);

void SelectShape(Mat& paramRegion, Mat& paramOutRegion, String paramShpeType, double paramMinValue, double paramMaxValue);